package com.hawk.eye.server.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hawk.eye.common.model.ServiceMetadata;
import com.hawk.eye.common.page.PageQuery;
import com.hawk.eye.common.page.PageResult;
import com.hawk.eye.server.domain.dto.req.ServiceConfigReqDTO;
import com.hawk.eye.server.domain.dto.resp.ServiceConfigDetailRespDTO;
import com.hawk.eye.server.domain.dto.resp.ServiceConfigRespDTO;
import com.hawk.eye.server.domain.po.ServiceConfig;
import com.hawk.eye.common.utils.Kv;

import java.util.List;

/**
 * 告警配置 Service接口
 *
 * @author salad
 * @date 2023-09-23
 */
public interface IServiceConfigService extends IService<ServiceConfig> {

    /**
     *
     * @param pageQuery
     * @param reqDTO
     * @return
     */
    PageResult<ServiceConfigRespDTO> page(PageQuery pageQuery, ServiceConfigReqDTO reqDTO);

    /**
     *
     * @param reqVoToReqDto
     * @return
     */
    boolean save(ServiceConfigReqDTO reqVoToReqDto);

    /**
     *
     * @param reqVoToReqDto
     * @return
     */
    boolean update(ServiceConfigReqDTO reqVoToReqDto);

    /**
     *
     * @param reqDTO
     * @return
     */
    long getServiceZnNameCount(ServiceConfigReqDTO reqDTO);

    /**
     *
     * @param id
     * @return
     */
    ServiceConfigDetailRespDTO detail(Long id);

    /**
     *
     * @param serviceMetadata
     * @return
     */
    ServiceConfig getServiceConfig(ServiceMetadata serviceMetadata);

    /**
     *
     * @param serviceId
     * @return
     */
    ServiceConfig getServiceConfig(Long serviceId);

    /**
     *
     * @param serviceZnName
     * @return
     */
    ServiceConfig getServiceConfig(String serviceZnName);

    /**
     *
     * @param reqVoToReqDto
     * @return
     */
    boolean changeStatus(ServiceConfigReqDTO reqVoToReqDto);

    /**
     *
     * @return
     */
    List<Kv> nameList();

    /**
     *
     * @param id
     * @return
     */
    List<ServiceConfigRespDTO> getServiceConfigByGroup(Long id);

    /**
     *
     * @return
     */
    List<Kv> userList();

    /**
     *
     * @return
     */
    List<Kv> userListNotSelf();

}
